package com.sharker.models.adapter;

import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.sharker.R;
import com.sharker.models.bean.TryBeen;

import java.util.List;

import jp.wasabeef.glide.transformations.RoundedCornersTransformation;

/**
 * 项目名称
 * 类描述：
 * 创建人：${徐家浩}
 * 创建时间：2017/4/12 20:11
 * 修改人：${徐家浩}
 * 修改备注：
 */
public class MyAdapter2 extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public static final int TYPE_HEADER = 0;  //说明是带有Header的
    public static final int TYPE_NORMAL = 2;  //说明是不带有header和footer的

    //获取从Activity中传递过来每个item的数据集合
    private List<TryBeen> mDatas;
    private View mHeaderView;
    private Context context;

    public MyAdapter2(List<TryBeen> mDatas, Context context) {
        this.mDatas = mDatas;
        this.context = context;
    }
    public void setHeaderView(View headerView) {
        mHeaderView = headerView;
        notifyItemInserted(0);
    }

    /**
     * 重写这个方法，很重要，是加入Header和Footer的关键，我们通过判断item的类型，从而绑定不同的view    *
     */
    @Override
    public int getItemViewType(int position) {
        if (mHeaderView == null) {
            return TYPE_NORMAL;
        }
        if (position == 0) {
            //第一个item应该加载Header
            return TYPE_HEADER;
        }
        return TYPE_NORMAL;
    }

    //创建View，如果是HeaderView或者是FooterView，直接在Holder中返回
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (mHeaderView != null && viewType == TYPE_HEADER) {
            return new ListHolder(mHeaderView);
        }
        View layout = LayoutInflater.from(parent.getContext()).inflate(R.layout.item2, parent, false);
        return new ListHolder(layout);
    }

    //绑定View，这里是根据返回的这个position的类型，从而进行绑定的，   HeaderView和FooterView, 就不同绑定了
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {


        if (getItemViewType(position) == TYPE_NORMAL) {
            if (holder instanceof ListHolder) {
                TryBeen tryBeen = mDatas.get(position);
                //这里加载数据的时候要注意，是从position-1开始，因为position==0已经被header占用了
                ((ListHolder) holder).classname.setText(tryBeen.getTitle2());
                ((ListHolder) holder).name.setText(tryBeen.getTitle());
//                Glide.with(context).load(tryBeen.getImage()).bitmapTransform(new RoundedCornersTransformation(context,10,0,RoundedCornersTransformation.CornerType.ALL)).crossFade(500).into(((ListHolder) holder).imageView);
                ((ListHolder) holder).imageView.setBackgroundResource(R.mipmap.teacher);
                return;
            }
            return;
        } else if (getItemViewType(position) == TYPE_HEADER) {
            return;
        } else {
            return;
        }
    }

    //在这里面加载ListView中的每个item的布局
    class ListHolder extends RecyclerView.ViewHolder {
        TextView classname;
        TextView name;
        ImageView imageView;

        public ListHolder(View itemView) {
            super(itemView);
            //如果是headerview或者是footerview,直接返回
            if (itemView == mHeaderView) {
                return;
            }
            classname = (TextView) itemView.findViewById(R.id.name2);
            name = (TextView) itemView.findViewById(R.id.classname2);
            imageView = (ImageView) itemView.findViewById(R.id.item_imageView2);
        }
    }

    //返回View中Item的个数，这个时候，总的个数应该是ListView中Item的个数加上HeaderView和FooterView
    @Override
    public int getItemCount() {
        if (mHeaderView == null ) {
            return mDatas.size();
        } else if (mHeaderView != null) {
            return mDatas.size()+1;
        } else {
            return mDatas.size()+2;
        }
    }
}
